fix(ci): make the diagnostics-only run-summary upload non-fatal - #14592
Merged
Conversation
The `Publish this shard's turbo run summary` step (`ci.yml:602`) is diagnostics-only (`if: always()` + `if-no-files-found: ignore`), but being unguarded still put it on the shard's pass/fail path: a failed *finalize* on the artifact service aborts the job before the attestation pair below ever runs. That is how a fully green shard (313-byte upload, content already stored, FinalizeArtifact 403) was evicted from the merge queue. Adds `continue-on-error: true` to that one step, plus a docblock paragraph explaining why, so the next reader does not tidy it back. The attestation pair (#6082's fail-closed credential, the job's last two steps) and scripts/check-shard-attestation.mjs are untouched — they still run, still have no continue-on-error, and still must succeed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WLJQhde67SeTccsmnBVarV
baozhoutao
marked this pull request as ready for review
September 2, 2026 14:17
baozhoutao
deleted the
claude/issue-14469-run-summary-upload-nonfatal
branch
September 2, 2026 14:57
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #14469
What
.github/workflows/ci.yml— thePublish this shard's turbo run summarystep (:602) nowcarries
continue-on-error: true, and its docblock gets a new paragraph explaining why, sothe next reader does not "tidy" it back.
Per the triage's ⭐ sentence:
Why
Shard 2/6 was lost on a diagnostics-only upload (
if: always()+if-no-files-found: ignore, i.e. not load-bearing) that was still, being unguarded, on the shard's pass/failpath: a failed finalize on the artifact service (
FinalizeArtifact403 on this build, thecontent already stored) aborted the job before the attestation pair ever ran, so the
fail-closed aggregator correctly read a missing credential and evicted a fully green shard
from the merge queue.
What is unchanged (verified)
git diff --statis exactly one file:Attest this shard ran and passed+Publish this shard's attestation, the job's last two steps,:717-724) — byte-for-byte unchanged, noif:,no
continue-on-error, still the job's LAST TWO steps.scripts/check-shard-attestation.mjs— byte-for-byte unchanged (git diff origin/main -- scripts/check-shard-attestation.mjsis empty; it has zero references tocontinue-on-errorand does not read this step).non-retryablebythe action, and the lint forbids a step appended below it — out of scope for this card
per the triage's ⛔ fence).
Not in scope (per triage fences)
check-shard-attestation.mjsor the aggregator (test-gate/Verify test shard results) — fail-closed on a missing credential is the designed andcorrect reading.
deliberately left alone here; [finding] Merge-queue build for PR #14433 evicted with every test green —
actions/upload-artifactFinalizeArtifact returned a non-retryable 403 on two shards at the same second, and the fail-closed attestation gate read them as missing #14469 is not addressed for that shard, only for thediagnostics-upload eviction path.
Gates
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commandsderives27 commands for this path (
.github/workflows/ci.yml) at merge-base f60ab90; all 27 runagainst head abbf168 (working tree confirmed byte-identical to HEAD before running —
git diff HEADempty).--ranreconciliation: 27 derived, 27 run, 0 UNRUN (exit 0).25 RAN-PASS, 2 NOT-MEASURED (both PREREQUISITE-NOT-MET, not red — evidence below):
skip-changeset: no package publishes — diff is
.github/workflows/ci.ymlonly (labelrequested on this PR).
Note:
origin/mainadvanced 7 commits during this run (to 7085f90) but none touched.github/workflows/ci.yml,scripts/check-shard-attestation.mjs, or the dispatch-gatestooling —
git log f60ab90ae..origin/main -- .github/workflows/ scripts/check-shard- attestation.mjs scripts/pm/dispatch-gates.mjsis empty, so this card's file surface andderived gate set are unaffected; not rebased.
🤖 Generated with Claude Code
https://claude.ai/code/session_01WLJQhde67SeTccsmnBVarV
Generated by Claude Code